昨天我們建好了牧場的 GPS 導航系統 (PowerDNS),今天要一口氣建造兩個重要設施:大倉庫和交通指揮中心!就像牧場需要一個共用的飼料倉庫,還需要一個智慧分流器來避免牛羊們擠成一團一樣。
今天我們要在 bastion-infra-server 上同時建置 NFS 共享儲存和 HAProxy 負載均衡器,讓它成為我們數位牧場的後勤核心!
在 Kubernetes 多叢集環境中,我們需要兩個關鍵的基礎設施:
共享儲存需求:
負載均衡需求:
今天建置的服務架構:
bastion-infra-server (192.168.0.135):
├── PowerDNS (Port 53) # Day 5 完成
├── NFS Server (Port 2049) # 今天建置
└── HAProxy (Port 80/443) # 今天建置
負載均衡配置:
Port 80/443 → Rancher UI (rancher-server-1) - 根據域名分流
Port 80/443 → Applications (rancher-master-1, rancher-worker-1) - 根據域名分流
設定環境變數並安裝 NFS:
# 設定環境變數
export BASTION_IP="192.168.0.135"
export NETWORK_CIDR="192.168.0.0/24"
# 安裝 NFS Server
sudo apt update
sudo apt install -y nfs-kernel-server nfs-common
# 建立 NFS 共享目錄
sudo mkdir -p /nfs/rancher-backup # Rancher 備份資料
sudo mkdir -p /nfs/nfs-client # 一般 K8s 儲存
# 設定目錄權限
sudo chown -R nobody:nogroup /nfs
sudo chmod -R 777 /nfs/rancher-backup
sudo chmod -R 777 /nfs/nfs-client
編輯 /etc/exports
設定檔:
sudo vim /etc/exports
新增匯出規則:
# NFS 匯出設定
/nfs/rancher-backup 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)
/nfs/nfs-client 192.168.0.0/24(rw,sync,no_subtree_check,no_root_squash)
# 重新載入匯出設定
sudo exportfs -ra
# 啟動並啟用 NFS 服務
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
# 檢查服務狀態
sudo systemctl status nfs-kernel-server
sudo showmount -e localhost
# 安裝 HAProxy
sudo apt install -y haproxy
# 備份原始設定檔
sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.backup
目前先使用 HAProxy 的預設設定檔,確保服務能正常啟動。預設設定檔通常包含基本的統計監控頁面,明天我們將建立完整的 Rancher 多叢集負載均衡配置。
# 驗證設定檔語法
sudo haproxy -f /etc/haproxy/haproxy.cfg -c
# 如果語法正確,啟動服務
sudo systemctl start haproxy
sudo systemctl enable haproxy
# 檢查服務狀態
sudo systemctl status haproxy
# 檢查所有服務狀態
sudo systemctl status nfs-kernel-server haproxy
# 檢查監聽埠號
sudo ss -tulnp | grep -E "(53|80|443|2049|8404)"
# 檢查 NFS 匯出
sudo showmount -e localhost
# 檢查 HAProxy 統計介面
curl -I http://${BASTION_IP}:8404/stats
# 如果無法連線,檢查 HAProxy 服務狀態
sudo systemctl status haproxy
sudo journalctl -u haproxy -n 10
在其他 VM 上測試 NFS 掛載:
# 安裝 NFS 客戶端 (在其他 VM 上)
sudo apt install -y nfs-common
# 測試掛載
sudo mkdir -p /mnt/nfs-test
sudo mount -t nfs 192.168.0.135:/nfs/nfs-client /mnt/nfs-test
# 測試讀寫
echo "NFS 測試 - $(date)" | sudo tee /mnt/nfs-test/test.txt
cat /mnt/nfs-test/test.txt
# 清理
sudo umount /mnt/nfs-test
# 測試 HAProxy 統計頁面
curl http://192.168.0.135:8404/stats
# 測試各個服務埠號 (注意:如果 HAProxy 服務沒啟動,這些埠號不會監聽)
nc -zv 192.168.0.135 80 # HTTP Frontend
nc -zv 192.168.0.135 443 # HTTPS Frontend
# 如果所有埠號都無法連線,HAProxy 服務可能有問題
# 常見問題排除:
# 1. 檢查設定檔語法:sudo haproxy -f /etc/haproxy/haproxy.cfg -c
# 2. 檢查服務狀態:sudo systemctl status haproxy
# 3. 檢查日誌:sudo journalctl -u haproxy -n 20
# 4. 手動啟動:sudo systemctl start haproxy
今天我們成功在 bastion-infra-server 上完成了兩個重要的基礎設施建置:NFS 共享儲存和 HAProxy 負載均衡器。這兩個服務將成為我們 Rancher 多叢集環境的重要後盾。
重點回顧:
明天我們將調整和優化 HAProxy 負載均衡器的設定,解決設定檔問題並完成針對 Rancher 多叢集環境的配置,讓負載均衡器能正常運作。
💡 牧場主小提示:HAProxy 統計頁面是監控負載均衡器的好工具!可以即時查看後端服務的健康狀態。記得加入書籤:http://${BASTION_IP}:8404/stats